package com.atguigu.yygh.hosp.controller;

import com.atguigu.yygh.hosp.result.R;
import com.atguigu.yygh.hosp.service.HospitalService;
import com.atguigu.yygh.hosp.service.ScheduleService;
import com.atguigu.yygh.model.hosp.Hospital;
import com.atguigu.yygh.vo.hosp.HospitalQueryVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Map;

//给挂号网站使用的关于医院的接口
@RestController
@RequestMapping("/api/hosp")
public class HospitalApiController {
    @Autowired
    HospitalService hospitalService;

    @Autowired
    ScheduleService scheduleService;

    /**
     * 医院的挂号网站,认证成功后,点击小科室,跳转到的排班详情页面
     * http://localhost:3000/hospital/schedule?hoscode=10000&depcode=200040878
     * 医院编号+科室编号+时间的范围
     * 查询的三块数据:
     *     (1)日期的vo列表
     *     (2)总日期个数
     *     (3)医院名称+科室名称+年月
     *
     *  挂号网站点击某个小科室跳转到排班的详情页面,该页面查询排班的日期列表
     */
    @GetMapping("/getBookingSchedule/{hoscode}/{depcode}/{pageNum}/{pageSize}")
    public R getBookingSchedule(@PathVariable String hoscode,@PathVariable String depcode,@PathVariable Integer pageNum,@PathVariable Integer pageSize){
        Map map = scheduleService.getBookingSchedule(hoscode,depcode,pageNum,pageSize);
        return R.ok().data(map);
    }


    /**
     * 根据医院编号,查询hospital+BookingRule
     * 首页点击某个医院,跳转到预约挂号页面,显示医院的信息和预约规则信息
     */
    @GetMapping("/show/{hoscode}")
    public R show(@PathVariable String hoscode){
        Map map=hospitalService.showDetail(hoscode);
        return R.ok().data(map);
    }


    /**
     * 根据医院名称,模糊查询
     */
    @GetMapping("/findByHosname/{hosname}")
    public R findByHosname(@PathVariable String hosname){
       List<Hospital> list= hospitalService.findByHosname(hosname);
        return R.ok().data("list",list);
    }

    /**
     * 首页加载医院列表
     * 根据医院的等级+区+状态
     * @param pageNum
     * @param pageSize
     * @param hospitalQueryVo
     * @return
     */
    @GetMapping("/selectPage/{pageNum}/{pageSize}")
    public R selectPage(@PathVariable Integer pageNum, @PathVariable Integer pageSize,HospitalQueryVo hospitalQueryVo){


        //从Mongodb中查询医院列表(Mongodb的分页查询返回的Page对象)
        Page<Hospital> page = hospitalService.selectPage(pageNum,pageSize,hospitalQueryVo);
//        page.getContent();
//        page.getTotalPages();
        //page对象中的属性: content+totalPages
        return R.ok().data("pages",page);
    }

}
